This application claims the benefit of Japanese Patent Application No. 2001-178295 filed on Jun. 13, 2001, which is incorporated herein by reference.
1) Field of the Invention
The present invention relates to techniques suitable for the layout of a semiconductor integrated circuit such an integrated circuit (IC), a large-scale integration (LSI), etc., and more particularly a method and apparatus for automatically synthesizing and designing, in a design objective circuit, a clock distributing circuit (clock tree) which connects a clock-signal supplying element and clock-signal receiving elements together, and a computer readable storage medium storing a design program.
2) Description of the Related Art
Generally, in a semiconductor integrated circuit, a clock signal is supplied from at least one clock-signal supplying element (hereinafter referred to as a clock-supplying element) to a great number of clock-signal receiving elements such as flip-flops (hereinafter referred to as clock-receiving elements) through a clock distributing circuit. In such a semiconductor integrated circuit, there is an increasing demand for a higher-speed and larger-scale integrated circuit, and finning of circuit structure has advanced. Because of this, in order to make the best use of the performance of a semiconductor integrated circuit, it has been demanded to design a clock distributing circuit so that the clock skew and clock propagation delay time are optimized.
The clock propagation delay time used herein is the time needed for a clock signal to arrive from a single clock-supplying element at each clock-receiving element. Optimization of the clock propagation delay time is to reduce (or shorten) the delay time to the minimum. Also, the clock skew used herein is the difference between the timing at which a clock signal reaches one clock-receiving element (aforementioned clock propagation delay time) and the timing at which the same clock signal reaches another clock-receiving element (aforementioned clock propagation delay time). Optimization of the clock skew is to make the clock skew zero (in certain cases, to make it a desired value, not zero).
A conventional design method (method of optimizing clock skew and clock propagation delay time) for the semiconductor integrated circuit (clock distributing circuit) mentioned above is disclosed, for example, in Japanese Laid-Open Patent Publication Nos. HEI 2-62675, HEI 8-44776, and HEI 8-50604.
In the method of laying out logical circuit elements, disclosed in the aforementioned Japanese Laid-Open Patent Publication No. HEI 2-62675, logical circuit elements (clock-receiving elements) such as flip-flops are first laid out according to the connection relationship between them. Then, the number of clock amplifiers (drives) is determined and they are laid out. In this manner, the clock propagation delay time between the logical circuit elements is optimized.
In the method of designing a clock distributing circuit for a semiconductor integrated circuit, disclosed in the aforementioned Japanese Laid-Open Patent Publication No. HEI 8-44776, a clock tree is designed so that the occurrence of clock skew is suppressed. At the time of a logical design, each circuit element (clock-receiving element) is connected directly to a clock input buffer (clock-supplying element), and at the time of layout, clock buffers (drivers) corresponding to the number of circuit elements are laid out in tree form. Thereafter, wiring is performed between the clock buffers and the logical elements.
In the layout method of preventing clock skew, disclosed in the aforementioned Japanese Laid-Open Patent Publication No. HEI 8-50604, the occurrence of clock skew is prevented by making a fluctuation in the clock wiring length as small as possible. In this method, a plurality of clock-signal input terminals (clock-receiving elements) are divided into groups, and buffer cells (drivers) are inserted and laid out for each group. Thereafter, wiring is performed between the clock-signal output terminal, the buffer cells, and the clock-signal input terminals.
In the conventional methods mentioned above, basically, the number of buffers (drivers) and the number of stages are determined between a clock-supplying element and clock-receiving elements; then, net wiring is performed between the clock-supplying element, the clock-receiving elements, and the buffers; and the clock skew is adjusted (or optimized) by adjusting the state of the wiring (wiring length, wiring width, wiring shape, positions of branch points, etc.). However, to optimize the clock skew more reliably, it is preferable not to determine the number of buffers and the number of stages before the layout but rather to adjust the wired state and the positions of buffers at the time of the layout. Therefore, the development of such an optimization technique has been demanded.
Generally, to optimize clock propagation delay time, it is also desirable to generate a clock tree while taking the balance of the clock tree into consideration from the viewpoint of the density of clock-receiving elements laid out at predetermined positions. However, net wiring is often performed from a single clock-supplying element toward a great number of clock-receiving elements, and in such a method, it is possible to optimize clock skew, but it is extremely difficult to optimize clock propagation delay time at the same time.
The present invention has been made in view of the problems mentioned above. Accordingly, it is the object of the present invention to simultaneously and reliably optimize the clock propagation delay time and clock skew of the entire semiconductor integrate circuit, by determining a wiring path while adjusting both a wired state and layout of buffers from clock-receiving elements toward a clock-supplying element at the time of the layout, and then designing a clock distributing circuit.
To achieve this end, there is provided a method of designing a clock distributing circuit which distributes and supplies a clock signal from at least one clock-supplying element to a plurality of clock-receiving elements, comprising:
a temporary wiring step of temporarily wiring a signal line which directly connects the clock-supplying element with each of the clock-receiving elements disposed at predetermined positions, through the shortest path;
a judgement step of judging whether or not clock skew in the plurality of clock-receiving elements has been optimized by the signal line temporarily wired in the temporary wiring step;
a grouping step of dividing the plurality of clock-receiving elements into a plurality of groups when it is judged in the judgement step that the clock skew has not been optimized;
a buffer insertion step of (a) assigning a single buffer to each of the groups obtained by the grouping step, (b) selecting a plurality of buffer-insertion candidate positions where the buffer can be inserted and disposed, (c) temporarily wiring, for each of the selected buffer-insertion candidate positions, both a signal line which connects the buffer, disposed at the buffer-insertion candidate position, with each of the clock-receiving elements belonging to the group through the shortest path, and a signal line which connects the buffer, disposed at the buffer-insertion candidate position, with the clock-supplying element through the shortest path, (d) selecting a buffer-insertion candidate position, which can optimize clock skew and clock propagation delay time in the clock-receiving elements belonging to the group, from among the plurality of buffer-insertion candidate positions, based on temporary wiring results obtained for all of the plurality of buffer-insertion candidate positions, and (e) inserting and disposing the buffer at the selected candidate position; and
a final wiring step of determining wiring paths of signal lines which connect the clock-supplying element, the plurality of clock-receiving elements, and the buffer, according to the temporary wiring results obtained in the temporary wiring step and the buffer insertion step;
wherein the temporary wiring step, the judgement step, the grouping step, and the buffer insertion step are repeatedly executed, while the buffers inserted into the plurality of groups by the buffer insertion step are being regarded as the plurality of clock-receiving elements, until it is judged in the judgement step that the clock skew has been optimized;
and wherein the final wiring step is executed when it is judged in the judgement step that the clock skew has been optimized.
In the buffer insertion step, a buffer, which has a characteristic of being able to optimize the clock propagation time from the buffer to the clock-receiving elements belonging to the group, may be selected as the buffer that is inserted into the group.
In addition, in accordance with the present invention, there is provided an apparatus for designing a clock distributing circuit which distributes and supplies a clock signal from at least one clock-supplying element to a plurality of clock-receiving elements. The design apparatus is equipped with a temporary wiring section, a judgement section, a grouping section, a buffer insertion section, and a final wiring section, which are used to execute the above-mentioned temporary wiring step, judgement step, grouping step, buffer insertion step, and final wiring step. The temporary wiring section, the judgement section, the grouping section, and the buffer insertion section are repeatedly operated, while the buffers inserted into the plurality of groups by the buffer insertion section are being regarded as the plurality of clock-receiving elements, until it is judged by the judgement section that the clock skew has been optimized. If it is judged by the judgement section that the clock skew has been optimized, the final wiring section is operated.
Furthermore, in accordance with the present invention, there is provided a computer readable storage medium storing a design program which causes a computer to design a clock distributing circuit which distributes and supplies a clock signal from at least one clock-supplying element to a plurality of clock-receiving elements. The design program causes the computer to function as the above-mentioned temporary wiring section, judgement section, grouping section, buffer insertion section, and final wiring section. The computer repeatedly functions as the temporary wiring section, the judgement section, the grouping section, and the buffer insertion section, while the buffers inserted into the plurality of groups by the buffer insertion section are being regarded as the plurality of clock-receiving elements, until it is judged by the judgement section that the clock skew has been optimized. If it is judged by the judgement section that the clock skew has been optimized, the computer functions as the final wiring section.
The design method and apparatus and the computer readable storage medium of the present invention have the following advantages:
(1) A clock-supplying element and a plurality of clock-receiving elements are first disposed and then a wiring path is determined from the clock-receiving elements toward the clock-supplying element, while both a wired state and a buffer-inserting position are being adjusted. Therefore, the clock propagation delay time and clock skew of the entire circuit are simultaneously and reliably optimized. As a result, a semiconductor circuit capable of high-speed operation can be designed and realized.
(2) A buffer having a characteristic of being able to optimize the clock propagation time from the buffer to the clock-receiving elements belonging to each group is selected as the buffer that is inserted into the group. As a result, the clock propagation delay time and clock skew of the entire circuit can be more reliably optimized.
(3) Even in the case where a specific element with a specific function (such as a selector, an inverter, etc.) is present between the clock-supplying element and some of the clock-receiving elements (specific clock-receiving elements), the position of the specific element with respect to specific clock-receiving elements, along with the wiring path between the specific element and the specific clock-receiving elements, is determined while adjusting both a wired state and a buffer-inserting position. As a result, the clock propagation delay time and clock skew of the entire circuit are simultaneously and reliably optimized.
(4) Even in the case where a plurality of clock-receiving elements belong to different logical hierarchies, a virtual input terminal which is connected to hierarchical clock-receiving elements belonging to each logical hierarchy is set for each logical hierarchy. The position of the input terminal with respect to the hierarchical clock-receiving elements, along with the wiring path between the input terminal and the hierarchical clock-receiving elements, is determined while adjusting both a wired state and a buffer-inserting position. As a result, the clock propagation delay time and clock skew of the entire circuit are simultaneously and reliably optimized.
(5) Based on the result of the final wiring, the clock-supplying element is changed to an element having a characteristic of being able to optimize clock propagation time. As a result, the clock propagation delay time and clock skew of the entire circuit can be more reliably optimized.